/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DA;

import BE.BEMovimiento;
import BL.BLPallet;
import BL.BLPosicionxrack;
import BL.BLProducto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

import javax.swing.JOptionPane;

/**
 *
 * @author Cristian
 */
public class DAMovimiento {


     public void agregarTraslado (BEMovimiento objMovimiento, int idmotivo)
   {

        DAConexion bd = new DAConexion();
        Connection con = null;
 String query;
    PreparedStatement s = null;
if (idmotivo==1)
 query= "INSERT INTO movimiento( fecha, estado,tipomovimiento,descripcion,idmotivo,origen,destino,hora)VALUES ('"
                    +objMovimiento.getFecha()+ "','"+objMovimiento.getEstado()+"',"+1+
                    ",'"+objMovimiento.getDescripcion()+"',"+idmotivo+","+objMovimiento.getOrigen().getIdposicionxrack()+","+objMovimiento.getDestino().getIdposicionxrack() +",CURRENT_TIME)";

    else
        query= "INSERT INTO movimiento( fecha, estado,tipomovimiento,descripcion,idmotivo,origen,hora)VALUES ('"
                    +objMovimiento.getFecha()+ "','"+objMovimiento.getEstado()+"',"+1+
                    ",'"+objMovimiento.getDescripcion()+"',"+idmotivo+","+objMovimiento.getOrigen().getIdposicionxrack()+",CURRENT_TIME)";


 DALineaMovimiento dalinea=new DALineaMovimiento();

        try
        {
            con = bd.conectar();
            s = con.prepareStatement(query);
            s.executeUpdate();

            BLPosicionxrack blPXR= new BLPosicionxrack();
            blPXR.cambiarEstado2(objMovimiento.getDestino().getIdposicionxrack(), 1);
            blPXR.cambiarEstado2(objMovimiento.getOrigen().getIdposicionxrack(),0);
            int idmov=getId();

             for (int i = 0; i < objMovimiento.getDetalleMovimiento().size(); i++) {
                objMovimiento.getDetalleMovimiento().get(i).setIdLineaMovimiento(i+1);
               dalinea.agregarLineaMovimiento(objMovimiento.getDetalleMovimiento().get(i),idmov);
            }
            JOptionPane.showMessageDialog(null,"Movimiento registrado","Informacion",JOptionPane.INFORMATION_MESSAGE);
           


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);




    }





 public void agregarInternamiento (BEMovimiento objMovimiento)
   {

        DAConexion bd = new DAConexion();
        Connection con = null;
ResultSet rs = null;
    PreparedStatement s = null;
int idmov;
 String query = "INSERT INTO movimiento( fecha, estado,descripcion,tipomovimiento,idmotivo,idcontacto,destino,hora)VALUES ('"
                    +objMovimiento.getFecha()+ "','"+objMovimiento.getEstado()+"','"+objMovimiento.getDescripcion()+"',"+0+","+0+","+objMovimiento.getContacto().getIdPersona()+
                    ","+objMovimiento.getDestino().getIdposicionxrack()+",CURRENT_TIME)";

DALineaMovimiento dalinea=new DALineaMovimiento();
        try
        {
            con = bd.conectar();
            s = con.prepareStatement(query);
            s.executeUpdate();
            idmov=getId();

             BLProducto blprod = new BLProducto();
           // System.out.println(idmov);
            for (int i = 0; i < objMovimiento.getDetalleMovimiento().size(); i++) {
                objMovimiento.getDetalleMovimiento().get(i).setIdLineaMovimiento(i+1);
               dalinea.agregarLineaMovimiento(objMovimiento.getDetalleMovimiento().get(i),idmov);


                          blprod.actualizarStock(objMovimiento.getDetalleMovimiento().get(i).getPallet().getProducto().getIdProducto(), objMovimiento.getDetalleMovimiento().get(i).getCantidad());

            }



           // JOptionPane.showMessageDialog(null,"Movimiento registrado","Informacion",JOptionPane.INFORMATION_MESSAGE);



        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);




    }










   public void agregarDespacho (BEMovimiento objMovimiento)
   {

        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        PreparedStatement s = null;
        int idmov;
        String query = "INSERT INTO movimiento( fecha, estado,descripcion,tipomovimiento,idmotivo,idcontacto,origen,hora)VALUES ('"
                    +objMovimiento.getFecha()+ "','"+objMovimiento.getEstado()+"','"+objMovimiento.getDescripcion()+"',"+2+","+0+","+
                    objMovimiento.getContacto().getIdPersona()+","+ objMovimiento.getOrigen().getIdposicionxrack()+",CURRENT_TIME)";

        DALineaMovimiento dalinea=new DALineaMovimiento();

        BLPallet blpallet=new BLPallet();
        try
        {
            con = bd.conectar();
            s = con.prepareStatement(query);
            s.executeUpdate();
            idmov=getId();


            BLProducto blprod = new BLProducto();
           // System.out.println(idmov);
            for (int i = 0; i < objMovimiento.getDetalleMovimiento().size(); i++) {
                objMovimiento.getDetalleMovimiento().get(i).setIdLineaMovimiento(i+1);
                dalinea.agregarLineaMovimiento(objMovimiento.getDetalleMovimiento().get(i),idmov);
                blpallet.agregarIdRack(objMovimiento.getDetalleMovimiento().get(i).getPallet().getIdPallet(), 0);
                blprod.actualizarStock(objMovimiento.getDetalleMovimiento().get(i).getPallet().getProducto().getIdProducto(), objMovimiento.getDetalleMovimiento().get(i).getCantidad());
            }            

//            JOptionPane.showMessageDialog(null,"Despacho registrado","Informacion",JOptionPane.INFORMATION_MESSAGE);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);

    }


    public int getId ()
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        int n;
        String query =  "select max(idmovimiento) from movimiento ";

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

            rs.next();

        n=rs.getInt(1);

        }
        catch (Exception e)
        {
          JOptionPane.showMessageDialog(null,"Error al obtener pallet",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return 0;
        }

        bd.cierraConexion(con);
        return n;

    }

      
    public ResultSet cargarMovimientos()
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        Date fechaActual = new Date();
        
        String query = "SELECT m.IDMOVIMIENTO, m.TIPOMOVIMIENTO, m.ESTADO, m.FECHA"                           
                     + " FROM MOVIMIENTO m"
                     + " WHERE m.FECHA= '" + fechaActual+"'";

//        if (producto.getEstado() != 2)
//            query += " AND p.ESTADO = '" + producto.getEstado() + "'";
//        if (producto.getIdTipoProducto() > 0)
//            query += " AND p.IDTIPOPRODUCTO = " + producto.getIdTipoProducto();
//        if (producto.getIdProveedor() > 0)
//            query += " AND c.IDCONTACTO = " + producto.getIdProveedor();
//
//        if (tipoBusqueda == 0 ) //Busqueda completa
//            query = "SELECT p.IDPRODUCTO, p.NOMBRE, t.TIPO, p.CANTIDAD, c.NOMBEMPRESA,"
//                         + "p.DESCRIPCION, p.ESTADO"
//                  + " FROM PRODUCTO p, TIPOPRODUCTO t, CONTACTO c, PRODUCTOXCONTACTO x"
//                  + " WHERE p.IDTIPOPRODUCTO = t.IDTIPOPRODUCTO AND"
//                        + " c.IDCONTACTO = x.IDCONTACTO AND x.IDPRODUCTO = p.IDPRODUCTO";;

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);
        return rs;
    }
    
    public void anularMovimiento (){
        
    }


}
